package com.lmf.juc.BlockingQueue;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * 演示阻塞队列：注意阻塞队列的添加，移除元素的方法，分别都有四种。
 *            只是每种方法遇见异常的处理情况不一样，因此要根据实际需要进行选择使用
 */
public class BlockingQueueDemo {
    public static void main(String[] args) {
        //创建一个阻塞队列：需指定队列的容量
        ArrayBlockingQueue<String> blockingQueue = new ArrayBlockingQueue<>(3);//阻塞队列容量为3

        /**
         *  第一组：报异常
         *  add()：添加一个元素进队列，
         *  remove()：自动移除第一个元素
         *  element()：检查第一个元素是否存在,存在则返回，
         */
        System.out.println(blockingQueue.add("a"));
        System.out.println(blockingQueue.add("b"));
        System.out.println(blockingQueue.add("c"));
        System.out.println(blockingQueue.element());
//        System.out.println(blockingQueue.add("d"));//会报队列已满异常

        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
        System.out.println(blockingQueue.remove());
//        System.out.println(blockingQueue.remove());//会报没有这个元素异常

        /**
         * 其他组参考csdn笔记
         */
    }

}
